昨天的範例終究是一個 Job
每一個 Job
是最小的單位
但是如果我們寫多個 Job
的時候 會一次全部執行
就像我們在寫前端的時候
所有的非同步都會同時動作
這樣的狀況有點失控
我們需要一些步驟來設計一下部署的工作流
基本的工作流可以分為可以同時處理的事情 和順序性的事情
所以要針對同時進行的 Job
做群組跟排序
這時候就需要使用到 Stages
Stage - 階段
每一個 Job 都可以設定他是在哪一個 階段進行的工作
這樣就可以做到把每一個 Job
群組歸類
再針對階段進行順序排序
先將基本的打包流程分為三個階段
這樣就可以設計出適合每一個專案的部署流程
中間也可以插入測試 或是在最後加入通知
stages:
- Prepare
- Build
- Deploy
- Notification
Prepare:Env:
stage: Prepare
script:
- echo "AAA=BBB" > .env
Prepare:submodule:
stage: Prepare
script:
- echo 'clone sub repo or submodule'
Prepare:Packages:
stage: Prepare
script:
- echo 'yarn install'
Build:DevResult:
stage: Build
script:
- echo 'yarn build'
Deploy:CopyToServer:
stage: Deploy
script:
- echo 'scp to server'
Notification:SendSuccessMessage:
stage: Notification
rules:
- when: on_success
script:
- echo 'node SendSuccessMessage.js'
Notification:SendErrorMessage:
stage: Notification
rules:
- when: on_failure
script:
- echo 'node SendErrorMessage.js'
了解這些之後就可以初步來規劃我們的部署